<?php
import('@.Action.PublicAction');
class RoleAction extends Action
{
    function _initialize() 
    {
       if(!isset($_SESSION['user_right'])) {
			$this->redirect('login','Public');
        }
        parent::_initialize();
    }
    	
	function index()
	{
		//如果是Action的初始入口，就清空$_SESSION["map"];
		if($_REQUEST["m"]==$this->name&&$_REQUEST["a"]==""&&count($_REQUEST)==2){
			$_SESSION["map"]=null;
		}
		//列表过滤器，生成查询Map对象
        $map = $this->_search('Role');	 
        if(method_exists($this,'_filter')) {
            $this->_filter($map);
        }
		$model        = D('Role');
        if(!empty($model)) {
        	$this->_list($model,$map);
        }
		$this->display();
        return;
	}
    /**
     +----------------------------------------------------------
     * 根据表单生成查询条件
     * 进行列表过滤
     +----------------------------------------------------------
     * @access protected 
     +----------------------------------------------------------
     * @param string $name 数据对象名称 
     +----------------------------------------------------------
     * @return HashMap
     +----------------------------------------------------------
     * @throws ThinkExecption
     +----------------------------------------------------------
     */
    protected function _search($name='') 
    {
        //生成查询条件
		if(empty($name)) {
			$name	=	$this->name;
		}
		$model	=	D($name);
		$map	=	array();
		/*判断是否有搜索条件*/
		$is_search=0;
		foreach($model->getDbFields() as $key=>$val) {
			//为了可以查到其他表，把-转变成.
			//在视图查询中使用的 
			//$val=str_replace(".","-",$val);//增加项目
            if(isset($_REQUEST[$val]) && $_REQUEST[$val]!='') {
                //原来的==查询
            	$map[$val]	=	$_REQUEST[$val];
				//修改的查询
				//$map[str_replace("-",".",$val)]	=	$_REQUEST[$val];
				//标记有查询条件
				$is_search=1;
				
				//保存查询条件到session中
				$_SESSION["map"]=$map;

            }
        }
		//如果没有查询条件，而session中有条件，那就使用session条件
		if($is_search==0&&isset($_SESSION["map"])){
        	$map=$_SESSION["map"];
        }
		//加入权限
		//$map["Studentinfo.bj"]="2004级会计学4";
		//!!!!!!!!!!!!!!!!加入可以查找学号
		//if(isset($_REQUEST['xh'])){$map['xh']=$_REQUEST['xh'];$_SESSION["map"]=$map;}
		return $map;
    }	
    /**
     +----------------------------------------------------------
     * 根据表单生成查询条件
     * 进行列表过滤
     +----------------------------------------------------------
     * @access protected 
     +----------------------------------------------------------
     * @param Model $model 数据对象 
     * @param HashMap $map 过滤条件 
     * @param string $sortBy 排序 
     * @param boolean $asc 是否正序 
     +----------------------------------------------------------
     * @return void
     +----------------------------------------------------------
     * @throws ThinkExecption
     +----------------------------------------------------------
     */
    protected function _list($model,$map,$sortBy='',$asc=true) 
    {
        //排序字段 默认为主键名
        if(isset($_REQUEST['order'])) {
            $order = $_REQUEST['order'];
        }else {
            $order = !empty($sortBy)? $sortBy: 'id';
        }
        //排序方式默认按照倒序排列
        //接受 sost参数 0 表示倒序 非0都 表示正序
        if(isset($_REQUEST['sort'])) {
            $sort = $_REQUEST['sort']?'asc':'desc';
        }else {
            $sort = $asc?'asc':'desc';
        }

		//map中的查询条件导出
		import("ORG.Util.HashMap");
		$maptmp=new HashMap();
        /**/
		foreach ($map as $key=>$val){
			$maptmp->put($key,array('like',"%".$val."%"));
		}


		//取得满足条件的记录数
        $count      = $model->count($maptmp);
		if($count>0) {
			import("ORG.Util.Page");
			//创建分页对象
			if(!empty($_REQUEST['listRows'])) {
				$listRows  =  $_REQUEST['listRows'];
			}else {
				$listRows  =  '';
			}
			$p          = new Page($count,$listRows);
			//分页查询数据
			$voList     = $model->findAll($maptmp,'*',$order.' '.$sort,$p->firstRow.','.$p->listRows);

			//分页显示
			$page       = $p->show();
			//列表排序显示
			$sortImg    = $sort ;                                   //排序图标
			$sortAlt    = $sort == 'desc'?'升序排列':'倒序排列';		//排序提示
			$sort       = $sort == 'desc'? 1:0;                     //排序方式
			//模板赋值显示
			$this->assign('list',       $voList);
			$this->assign('sort',       $sort);
			$this->assign('order',      $order);
			$this->assign('sortImg',    $sortImg);
			$this->assign('sortType',   $sortAlt);
			$this->assign("page",       $page);
		}
        return ;
    }
	

 
}
?>